<?php
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Ajax_Excution Controller
 * @package XGO CMS
 * @author Dương An - 06/07/2013 
 * @link http://muathe.vn
 */
class Ajax_excution extends CI_Controller {
    
    protected $_arrParams;

    function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->library('smarty3');
        $this->smarty			= new CI_Smarty3();
		// load models user,billing
        $this->load->model('db_user_model');
        $this->db_user_model		= new db_user_model();
        $this->load->model('db_game_model');
        $this->db_game_model		= new db_game_model();
        $this->load->model('db_item_model');
        $this->db_item_model		= new db_item_model();
        $this->load->model('db_logs_model');
        $this->db_logs_model		= new db_logs_model();
        require_once APPPATH . '../library/captcha/securimage.php';
        
        $this->_arrParams = $_REQUEST;
    }

    // --------------------------------------------------------------------
    function index() {
        redirect('home');
    }
    
    //***************** LOGIN IN HOME PAGE ******************//
    function login()
    {
        if(IS_AJAX){
            $msg                = array();
            $code               = 1;
            $errMsg             = '';
            
            $username           = $this->input->post('username');
            $password           = $this->input->post('password');
            
            if(!$username || !$password)
            {
                $code = -1;
                $msg[] = 'Username và Password không được bỏ trống';
            }
            
            if($code == 1)
            {
                $user = $this->db_user_model->checkLogin($username, $password);
                if(!$user){
                    $code = -1;
                    $msg[] = 'Đăng nhập thất bại. Sai username hoặc password';
                }
                else{
                    $this->session->set_userdata('user_info',$user);
                    $msg[] = "Đăng nhập thành công";
                }
            }
            foreach($msg as $m)
            {
                $errMsg .= $m.'<br/>';
            }
            echo json_encode(array("code"=>$code,"msg"=>$errMsg));
        }
    }
    //***************** GET SERVER BY GAME ID ******************//
    function getServer()
    {
        if(IS_AJAX)
        {
            $msg                = array();
            $code               = 1;
            $errMsg             = '';
            
            $gameid           = $this->input->post('gameid');
            if($this->db_game_model->isGameExist($gameid)===false){
                $code = -1;
                $msg[] = "Game bạn chọn không tồn tại";
            }
            
            if($code == 1)
            {
                $server = $this->db_game_model->getAllServer($gameid);
                echo json_encode(array('code'=>$code,'msg'=>$server));
            }else{
            
                foreach($msg as $m)
                {
                    $errMsg .= $m."<br/>";
                }

                echo json_encode(array('code'=>$code,'msg'=>$errMsg));
            }
        }
    }
    // ------------------------------------------------------------------------//
    //***************** INSERT ITEM FROM USER'S REQUEST ******************//
    function requestAddItem()
    {
        if(IS_AJAX)
        {
            $securimage         = new Securimage();
            $msg                = array();
            $code               = 1;
            $errMsg             = '';
            
            //Lấy user info, kiểm tra còn session hay ko?
            $user               = $this->session->userdata('user_info');
            if(!$user){//ko còn session thì break ngay
                $code = -2;
                echo json_encode(array('code'=>$code,'msg'=>'Vui lòng đăng nhập lại'));
                return;
            }
            
            $game_id                = $this->input->post('game_id');
            $server_id              = $this->input->post('server_id');
            $character_name         = $this->input->post('character_name');
            $item_type              = $this->input->post('item_type');
            $item_name              = $this->input->post('item_name');
            $item_amount            = $this->input->post('item_amount');
            $item_desc              = $this->input->post('item_desc');
            $item_img               = $this->input->post('item_img');
            $captcha                = $this->input->post('captcha');
            
            if($item_type!=1 && $item_type!=2){
                $code = -1;
                $msg[] = "Loại không hợp lệ";
            }
            //kiểm tra game tồn tại?
            if ($this->db_game_model->isGameExist($game_id)===false) {
                $code = -1;
                $msg[] = "Game bạn chọn không tồn tại";
            }
            //kiểm tra server có tồn tại? 
            if($this->db_game_model->isServerExist($server_id)===false){
                $code = -1;
                $msg[] = "Server bạn chọn không tồn tại";
            }
            if (!$securimage->check($captcha) && $captcha!==false) {
                $code = -1;
                $msg[] = "Mã xác nhận không đúng";
            }
            
            if($code == 1)
            {
                //Ghi log khỏi tạo ký gởi
                //$transID = PREFIX_G.alias_name($item[0]->name)."_".$item_amount."_".$item_name;
                $transID = "g_g".$game_id."_s".$server_id."_".time();
                //$game = $this->db_game_model->getGameByGID($game_id);
                //$server = $this->db_game_model->getServerBySID($server_id);
                $aParamsi = array(
                            "transID"           => $transID,
                            "step"              => 1, //1:khởi tạo, 2:xác nhận, 3:hoàn tất giao dịch
                            "initTime"          => date('Y-m-d H:s:i'),
                            "itemName"          => $item_name,
                            "itemAmount"        => $item_amount,
                            "itemType"          => $item_type,
                            "character_name"    => $character_name,
                            "username1"          => $user[0]->username,
                            "gid"              => $game_id,
                            "sid"            => $server_id,
                            "action"            => "Gửi",
                            "image"         => $item_img
                );
                $aUpdate = array("transID","initTime","step","itemName","itemAmount","itemType","character_name","username1","gid","sid","image");
                $this->db_logs_model->insert_onduplicate_translog_update($aParamsi, $aUpdate);
                
                //Ghi item
                $aParamsi = array(
                            "gid"               => $game_id,
                            "sid"               => $server_id,
                            "character_name"     => $character_name,
                            "type"              => $item_type,
                            "name"              => $item_name,
                            "amount"            => $item_amount,
                            "description"       => $item_desc,
                            "image"             => "data/images/uploads/".$item_img,
                            "username"          => $user[0]->username,
                            "status"            => 0,
                            "trans_order"            => 1, //lệnh gửi
                            "confirm_order"     => 0,
                            "created"           => date('Y-m-d H:s:i'),
                            "transID"           => $transID
                );
                $aUpdate = array("gid","sid","character_name","type","name","amount","description","image","username","status","trans_order","created","confirm_order","transID");
                $isSucc=$this->db_item_model->insert_onduplicate_Item($aParamsi, $aUpdate);
                if($isSucc==0)
                {
                    $code = -1;
                    $msg[] = 'Lỗi hệ thống';
                }
            }
            
            foreach($msg as $m)
            {
                $errMsg .= $m."<br/>";
            }
            
            echo json_encode(array('code'=>$code,'msg'=>$errMsg));
        }
    }
    // ------------------------------------------------------------//
    //***************** UPLOAD IMAMGE ****************//
    function uploadImage()
    {
        $config['upload_path'] = 'data/images/uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']	= '100';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
                echo $this->upload->display_errors();
        }
        else
        {
                $data = array('upload_data' => $this->upload->data());
                echo "<input name='urlimg' type='hidden' value='".$data['upload_data']['file_name']."'/><img src='data/images/uploads/".$data['upload_data']['file_name']."' class='preview'>";
        }
    }
    // ------------------------------------------------------------//
    //lấy ra item vừa đặt lệnh gửi để xác nhận hợp lệ hay không
    function getnewitem()
    {
        if(IS_AJAX)
        {
            $user = $this->session->userdata("user_info");
            if($user){
                $newItem = $this->db_item_model->getItem(array("trans_order"=>$this->_arrParams["trans_order"],"confirm_order"=>$this->_arrParams["confirm_order"]));
                for($i=0;$i<count($newItem);$i++){
                    $game = $this->db_game_model->getGameByGID($newItem[$i]->gid, 1);
                    $newItem[$i]->game_name = $game[0]->name;
                }
                echo json_encode(array("code"=>1,"msg"=>$newItem));
            }
            else{
                echo json_encode(array("code"=>-1));; //hết session login
            }
        }
    }
    // ------------------------------------------------------------//
    //lấy ra item có giao dịch hợp lệ để thực hiện việc cộng/trừ
    function gettransitem()
    {
        if(IS_AJAX)
        {
            $user = $this->session->userdata("user_info");
            if($user){
                $newItem = $this->db_item_model->getItem(array("trans_order"=>$this->_arrParams["trans_order"],"confirm_order"=>$this->_arrParams["confirm_order"]));
                for($i=0;$i<count($newItem);$i++){
                    $game = $this->db_game_model->getGameByGID($newItem[$i]->gid, 1);
                    $newItem[$i]->game_name = $game[0]->name;
                }
                echo json_encode(array("code"=>1,"msg"=>$newItem));
            }
            else{
                echo json_encode(array("code"=>-1));; //hết session login
            }
        }
    }
    
    function getItemByParams()
    {
        if(IS_AJAX){
            $user = $this->session->userdata('user_info');
            $item_id = $this->input->post('item_id');
            $item = $this->db_item_model->getItem(array("id"=>$item_id));
            //echo json_encode($item);
            $this->smarty->assign(array('item'=>$item,"db_game_model"=>$this->db_game_model,"user_info"=>$user));
            $this->smarty->display('template/frontend/admin/02_ajaxtemp2');
        }
    }
    
    function getItemByParams2()
    {
        if(IS_AJAX){
            $user = $this->session->userdata('user_info');
            //$item_id = $this->input->post('item_id');
            //$item = $this->db_item_model->getItem(array("id"=>$item_id));
            $transID = $this->input->post('transID');
            $item = $this->db_logs_model->getLogs(array('transID'=>$transID));
            //echo json_encode($item);exit;
            $this->smarty->assign(array('item'=>$item,"db_game_model"=>$this->db_game_model,"user_info"=>$user));
            $this->smarty->display('template/frontend/admin/03_congtru');
        }
    }
    
    // ------------------------------------------------------------//
    //***********  ***********//
    function trans_access()
    {
        if(IS_AJAX)
        {
            $user = $this->session->userdata('user_info');
            if(!$user){
                echo json_encode(array("code"=>-2,"msg"=>"Vui lòng đăng nhập lại."));
                return;
            }
            
            $code           = 1;
            $msg            = array();
            $errMsg         = "";
            
            $confirm_trans  = $this->input->post('confirm_trans');
            $confirm_amount = $this->input->post('item_amount');
            $item_id        = $this->input->post('item_id');
            
            $item           = $this->db_item_model->getItem(array('id'=>$item_id));
            if($confirm_amount!=$item[0]->amount)
            {
                $code = -1;
                $msg[] = "Số lượng không đúng";
            }
            if($item[0]->confirm_order==1){
                $code = -1;
                $msg[] = "Giao dịch này đã xác nhận hợp lệ";
            }
            if($item[0]->confirm_order==-1){
                $code = -1;
                $msg[] = "Giao dịch này đã xác nhận hủy";
            }
            
            $game = $this->db_game_model->getGameByGID($item[0]->gid);
            $server = $this->db_game_model->getServerBySID($item[0]->sid);
            $date_update = date('Y-m-d H:s:i');
            $transcode = strtoupper(random_string("alpha", 6));

            $answer = '<div style="text-align: left;">
                                ['.$date_update.'] <strong style="color:green;">'.$user[0]->username.'</strong>: Bạn đã gửi <strong>'.$item[0]->amount.' '.$item[0]->name.'</strong> tại server '.$server[0]->name.' game '.$game[0]->name.'.<br>
                                Bạn vui lòng gặp nhân viên <strong>Gamebank9</strong> tại Tạp Hóa - Thế Ngoại Đào Nguyên để hoàn thành giao dịch.<br>
                                Bạn vui lòng gọi đến số điện thoại hỗ trợ <strong style="color:red;">04.39393464</strong> để khẳng định trước khi giao dịch.</div>';
            
            if($code == 1)
            {
                //update log giao dich
                $aParamsi = array(
                            "transID"           => $item[0]->transID,
                            "step"              => 2,
                            "confirmTime"       => date('Y-m-d H:s:i'),
                            "username2"         => $user[0]->username,
                            "transCode"         => $transcode,
                            "statusDesc"        => "Hợp lệ"
                );
                $aUpdate = array("transID","step","confirmTime","username2","transCode","statusDesc");
                $this->db_logs_model->insert_onduplicate_translog_update($aParamsi, $aUpdate);
                
                //update item giao dịch
                $aParamsi = array(
                            "id"            => $item_id,
                            //"trans_order"         => 0,
                            "confirm_order"        => $confirm_trans,
                            "translog"             => $answer,
                            "updated"               => $date_update,
                            "transCode"             => $transcode
                );
                $aUpdate = array("id","confirm_order","translog","updated","transCode");
                if($this->db_item_model->insert_onduplicate_Item($aParamsi, $aUpdate)){
                    $msg[] = $answer;
                }
                else{
                    $code = -1;
                    $msg[] = 'Lỗi hệ thống. Thử lại lần nữa';
                }
            }
            
            foreach($msg as $m){
                $errMsg.=$m.'<br>';
            }
            echo json_encode(array("code"=>$code,"msg"=>$errMsg));
        }
    }
    
    // ------------------------------------------------------------//
    //*************  **************//
    function trans_denied()
    {
        if(IS_AJAX)
        {
            $user = $this->session->userdata('user_info');
            if(!$user){
                echo json_encode(array("code"=>-2,"msg"=>"Vui lòng đăng nhập lại."));
                return;
            }
            
            $code           = 1;
            $msg            = array();
            $errMsg         = "";
            
            $confirm_trans  = $this->input->post('confirm_trans');
            $reason_denied = $this->input->post('reason_denied');
            $item_id        = $this->input->post('item_id');
            
            $item           = $this->db_item_model->getItem(array('id'=>$item_id));
            if($item[0]->confirm_order==1){
                $code = -1;
                $msg[] = "Giao dịch này đã xác nhận hợp lệ";
            }
            if($item[0]->confirm_order==-1){
                $code = -1;
                $msg[] = "Giao dịch này đã xác nhận hủy";
            }
            $date_update = date('Y-m-d H:s:i');
            //$answer = '<div style="text-align: left;">
                                //['.$date_update.'] '.$reason_denied.'.</div>';
            
            if($code == 1)
            {
                //update log giao dich
                $aParamsi = array(
                            "transID"           => $item[0]->transID,
                            "step"              => 0,
                            "confirmTime"       => date('Y-m-d H:s:i'),
                            "username2"         => $user[0]->username,
                            "statusDesc"        => $reason_denied
                );
                $aUpdate = array("transID","step","confirmTime","username2","statusDesc");
                $this->db_logs_model->insert_onduplicate_translog_update($aParamsi, $aUpdate);
                
                //update item giao dịch
                $aParamsi = array(
                            "id"            => $item_id,
                            //"trans_order"         => 0,
                            "confirm_order"        => $confirm_trans,
                            "translog"             => $reason_denied,
                            "updated"               => $date_update
                );
                $aUpdate = array("id","confirm_order","translog","updated");
                if($this->db_item_model->insert_onduplicate_Item($aParamsi, $aUpdate)){
                    $msg[] = $answer;
                }
                else{
                    $code = -1;
                    $msg[] = 'Lỗi hệ thống. Thử lại lần nữa';
                }
            }
            
            foreach($msg as $m){
                $errMsg.=$m.'<br>';
            }
            echo json_encode(array("code"=>$code,"msg"=>$errMsg));
        }
    }
    
    // ------------------------------------------------------------//
    //*************  **************//
    function getconfirmitem()
    {
        if(IS_AJAX)
        {
            $user = $this->session->userdata("user_info");
            if($user){
                $strquery = "(username='".$user[0]->username."' and trans_order=1 and confirm_order<>0)";
                $newItem = $this->db_item_model->getItembySqlStr($strquery);
                for($i=0;$i<count($newItem);$i++){
                    $game = $this->db_game_model->getGameByGID($newItem[$i]->gid, 1);
                    $newItem[$i]->game_name = $game[0]->name;
                    $server = $this->db_game_model->getServerBySID($newItem[$i]->gid, 1);
                    $newItem[$i]->server_name = $server[0]->name;
                }
                echo json_encode(array("code"=>1,"msg"=>$newItem));
            }
            else{
                echo json_encode(array("code"=>-1));; //hết session login
            }
        }
    }    
    
    function passwordHashing($password=null)
    {
            // Store the new user's information in the database. 
            $key 				= $this->config->item('encryption_key');
            $salt1		 		= hash('sha512', $key . $password);
            $salt2 				= hash('sha512', $password . $key);
            $hashed_password 	= hash('sha512', $salt1 . $password . $salt2);	
            return $hashed_password;
    }
    // ----------------------------END--------------------------------//

}

/* End of file ajax_excution.php */
/* Location: ./application/controllers/ajax_excution.php */